async function opfs() {
  const opfsRoot = await navigator.storage.getDirectory();
  const fileHandle = await opfsRoot.getFileHandle("fast", { create: true });
  const accessHandle = await fileHandle.createSyncAccessHandle();

  const textEncoder = new TextEncoder();
  const textDecoder = new TextDecoder();

  // 将这个变量初始化为文件的大小。
  let size;
  // 文件当前的大小，最开始是 `0`。
  size = accessHandle.getSize();
  // 编码要写入文件的内容。
  const content = textEncoder.encode("Some text");
  // 在文件的开头写入内容。
  accessHandle.write(content, { at: size });
  // 强制刷入更改。
  accessHandle.flush();
  // 文件当前的大小，现在是 `9`（"Some text" 的长度）。
  size = accessHandle.getSize();

  // 编码更多要写入文件的内容。
  const moreContent = textEncoder.encode("More content");
  // 在文件的末尾写入内容。
  accessHandle.write(moreContent, { at: size });
  // 强制刷入更改。
  accessHandle.flush();
  // 文件当前的大小，现在是 `21`（"Some textMore content" 的长度）。
  size = accessHandle.getSize();

  // 准备一个长度与文件相同的数据视图。
  const dataView = new DataView(new ArrayBuffer(size));

  // 将整个文件读取到数据视图。
  accessHandle.read(dataView);
  // 打印 `"Some textMore content"`。
  console.log(textDecoder.decode(dataView));

  // 在数据视图中的偏移位置 9 处开始读取。
  accessHandle.read(dataView, { at: 9 });
  // 打印 `"More content"`。
  console.log(textDecoder.decode(dataView));

  // 裁去文件头 4 个字节之后的内容。
  accessHandle.truncate(4);

}

opfs();